package com.leyou;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
@MapperScan("com.leyou.auth.mapper")
public class LyAuthApplication {
    public static void main(String[] args) {
        SpringApplication.run(LyAuthApplication.class, args);
    }
}
/**
 * Spring Bean在Spring Bean Factory Container中完成其整个生命周期：以下是完成其生命周期所需的各种内容：
 *
 * 1. Spring容器从XML文件或@Configuration中bean的定义中实例化bean(IOC)。
 * 2. Spring依据配置中指定的属性，为bean填充所有属性(DI)。
 * 3. 如果bean实现BeanNameAware接口，spring调用setBeanName()方法，并传递bean的id。
 * 4. 如果bean实现BeanFactoryAware接口，spring将调用setBeanFactory()方法，并把自己作为参数。
 * 5. 如果bean实现ApplicationContextAware接口，spring将调用setApplicationContext()方法，并把ApplicationContext实例作为参数。
 * 6. 如果存在与bean关联的任何BeanPostProcessors（后处理器），则调用preProcessBeforeInitialization()方法。比如Autowired等依赖注入功能是在此时完成。
 * 7. 如果Bean实现了InitializingBean接口，则调用bean的afterPropertiesSet()方法。
 * 8. 如果为bean指定了init-method，那么将调用bean的init方法。
 * 9. 最后，如果存在与bean关联的任何BeanPostProcessors，则将调用postProcessAfterInitialization（）方法。
 *
 * 第一第二步是最重要的，换句话说:
 * 1)IOC过程，控制反转，创建对象过程-类似new对象的过程 调用构造方法
 * 2)再进行依赖注入，调用注入setter方法，给成员变量赋值  读取配置文件
 * IOC -> DI
 */
